package com.yzy.soft.system.controller;

//import com.stylefeng.guns.common.annotion.BussinessLog;
//import com.stylefeng.guns.common.annotion.Permission;
//import com.stylefeng.guns.common.constant.Const;
//import com.stylefeng.guns.common.constant.Dict;
//import com.stylefeng.guns.common.constant.factory.ConstantFactory;
//import com.stylefeng.guns.common.constant.state.MenuStatus;
//import com.stylefeng.guns.common.exception.BizExceptionEnum;
//import com.stylefeng.guns.common.exception.BussinessException;
//import com.stylefeng.guns.common.persistence.dao.MenuMapper;
//import com.stylefeng.guns.common.persistence.model.Menu;
//import com.sinosoft.liscw.core.base.controller.BaseController;
//import com.stylefeng.guns.core.base.tips.Tip;
//import com.stylefeng.guns.core.log.LogObjectHolder;
import com.yzy.soft.common.persistence.dao.MenuDao;
import com.yzy.soft.core.base.controller.BaseController;
import com.yzy.soft.core.node.MenuNode;
//import com.stylefeng.guns.core.support.BeanKit;
//import com.stylefeng.guns.core.util.ToolUtil;
//import com.stylefeng.guns.modular.system.service.IMenuService;
//import com.styl efeng.guns.modular.system.warpper.MenuWarpper;
import com.yzy.soft.system.dto.NavDto;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * 菜单控制器
 *
 * @author fengshuonan
 * @Date 2017年2月12日21:59:14
 */
@Controller
@RequestMapping("/menu")
public class MenuController extends BaseController{
// extends BaseController
    private static String PREFIX = "/system/menu/";
    @Resource
    private MenuDao menuDao;

    /**
     * 获取菜单列表(首页用)
     */
    @RequestMapping(value = "/menuTreeList1")
    @ResponseBody
    public List<MenuNode> menuTreeList() {
        List<MenuNode> roleTreeList = menuDao.getMenusByRoleIds();
        System.out.println("zhixib执行了执行了");
        //List<MenuNode> titles = MenuNode.buildTitle(roleTreeList);
        //List<MenuNode> res=MenuNode.buildNodeTree1(roleTreeList);
        return MenuNode.buildNodeTree1(roleTreeList);

    }



    @RequestMapping(value = "/menuTreeList")
    @ResponseBody
    public List<NavDto> menuTreeList1() {
        List<MenuNode> roleTreeList = this.menuDao.getMenusByRoleIds();
        System.out.println("zhixib执行了执行了");
        //List<MenuNode> titles = MenuNode.buildTitle(roleTreeList);
        List<MenuNode> res=MenuNode.buildNodeTree1(roleTreeList);


        NavDto navDto=null;
        NavDto subNavDto=null;
        List<NavDto> list=new ArrayList<>();
        for(MenuNode node:res){
            List<MenuNode> s=node.getChildren();
            List<NavDto> re=null;
            if(s.size()>0){
                re=new ArrayList<>();
                for(MenuNode node1:s){

                    subNavDto=new NavDto(node1.getId().toString(),node1.getName(),node1.getIcon(),node1.getUrl(),"false",null);
                    re.add(subNavDto);
                }
                navDto=new NavDto(node.getId().toString(),node.getName(),node.getIcon(),node.getUrl(),"false",re);

            }else{
                navDto=new NavDto(node.getId().toString(),node.getName(),node.getIcon(),node.getUrl(),"false",null);
                //navDto.setChildren(null);
            }
            list.add(navDto);
        }
        return list;

    }


//    @Resource
//    MenuMapper menuMapper;



//    @Resource
//    IMenuService menuService;

    /**
     * 跳转到菜单列表列表页面
     */
//    @RequestMapping("")
//    public String index() {
//        return PREFIX + "menu.html";
//    }
//
//    /**
//     * 跳转到菜单列表列表页面
//     */
//    @RequestMapping(value = "/menu_add")
//    public String menuAdd() {
//        return PREFIX + "menu_add.html";
//    }
//
//    /**
//     * 跳转到菜单详情列表页面
//     */
//    @Permission(Const.ADMIN_NAME)
//    @RequestMapping(value = "/menu_edit/{menuId}")
//    public String menuEdit(@PathVariable Integer menuId, Model model) {
//        if (ToolUtil.isEmpty(menuId)) {
//            throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
//        }
//        Menu menu = this.menuMapper.selectById(menuId);
//
//        //获取父级菜单的id
//        Menu temp = new Menu();
//        temp.setCode(menu.getPcode());
//        Menu pMenu = this.menuMapper.selectOne(temp);
//
//        //如果父级是顶级菜单
//        if (pMenu == null) {
//            menu.setPcode("0");
//        } else {
//            //设置父级菜单的code为父级菜单的id
//            menu.setPcode(String.valueOf(pMenu.getId()));
//        }
//
//        Map<String, Object> menuMap = BeanKit.beanToMap(menu);
//        menuMap.put("pcodeName", ConstantFactory.me().getMenuNameByCode(temp.getCode()));
//        model.addAttribute("menu", menuMap);
//        LogObjectHolder.me().set(menu);
//        return PREFIX + "menu_edit.html";
//    }

//    /**
//     * 修该菜单
//     */
//    @Permission(Const.ADMIN_NAME)
//    @RequestMapping(value = "/edit")
//    @BussinessLog(value = "修改菜单", key = "name", dict = Dict.MenuDict)
//    @ResponseBody
//    public Tip edit(@Valid Menu menu, BindingResult result) {
//        if (result.hasErrors()) {
//            throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
//        }
//        //设置父级菜单编号
//        menuSetPcode(menu);
//
//        this.menuMapper.updateById(menu);
//        return SUCCESS_TIP;
//    }
//
//    /**
//     * 获取菜单列表
//     */
//    @Permission(Const.ADMIN_NAME)
//    @RequestMapping(value = "/list")
//    @ResponseBody
//    public Object list(@RequestParam(required = false) String menuName, @RequestParam(required = false) String level) {
//        List<Map<String, Object>> menus = this.menuDao.selectMenus(menuName, level);
//        return super.warpObject(new MenuWarpper(menus));
//    }
//
//    /**
//     * 新增菜单
//     */
//    @Permission(Const.ADMIN_NAME)
//    @RequestMapping(value = "/add")
//    @BussinessLog(value = "菜单新增", key = "name", dict = Dict.MenuDict)
//    @ResponseBody
//    public Tip add(@Valid Menu menu, BindingResult result) {
//        if (result.hasErrors()) {
//            throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
//        }
//
//        //判断是否存在该编号
//        String existedMenuName = ConstantFactory.me().getMenuNameByCode(menu.getCode());
//        if (ToolUtil.isNotEmpty(existedMenuName)) {
//            throw new BussinessException(BizExceptionEnum.EXISTED_THE_MENU);
//        }
//
//        //设置父级菜单编号
//        menuSetPcode(menu);
//
//        menu.setStatus(MenuStatus.ENABLE.getCode());
//        this.menuMapper.insert(menu);
//        return SUCCESS_TIP;
//    }
//
//    /**
//     * 删除菜单
//     */
//    @Permission(Const.ADMIN_NAME)
//    @RequestMapping(value = "/remove")
//    @BussinessLog(value = "删除菜单", key = "menuId", dict = Dict.DeleteDict)
//    @ResponseBody
//    public Tip remove(@RequestParam Integer menuId) {
//        if (ToolUtil.isEmpty(menuId)) {
//            throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
//        }
//
//        //缓存菜单的名称
//        LogObjectHolder.me().set(ConstantFactory.me().getMenuName(menuId));
//
//        this.menuService.delMenuContainSubMenus(menuId);
//        return SUCCESS_TIP;
//    }
//
//    /**
//     * 查看菜单
//     */
//    @RequestMapping(value = "/view/{menuId}")
//    @ResponseBody
//    public Tip view(@PathVariable Integer menuId) {
//        if (ToolUtil.isEmpty(menuId)) {
//            throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
//        }
//        this.menuMapper.selectById(menuId);
//        return SUCCESS_TIP;
//    }



//    /**
//     * 获取菜单列表(选择父级菜单用)
//     */
//    @RequestMapping(value = "/selectMenuTreeList")
//    @ResponseBody
//    public List<ZTreeNode> selectMenuTreeList() {
//        List<ZTreeNode> roleTreeList = this.menuDao.menuTreeList();
//        roleTreeList.add(ZTreeNode.createParent());
//        return roleTreeList;
//    }
//
//    /**
//     * 获取角色列表
//     */
//    @RequestMapping(value = "/menuTreeListByRoleId/{roleId}")
//    @ResponseBody
//    public List<ZTreeNode> menuTreeListByRoleId(@PathVariable Integer roleId) {
//        List<Integer> menuIds = this.menuDao.getMenuIdsByRoleId(roleId);
//        if (ToolUtil.isEmpty(menuIds)) {
//            List<ZTreeNode> roleTreeList = this.menuDao.menuTreeList();
//            return roleTreeList;
//        } else {
//            List<ZTreeNode> roleTreeListByUserId = this.menuDao.menuTreeListByMenuIds(menuIds);
//            return roleTreeListByUserId;
//        }
//    }
//
//    /**
//     * 根据请求的父级菜单编号设置pcode和层级
//     */
//    private void menuSetPcode(@Valid Menu menu) {
//        if (ToolUtil.isEmpty(menu.getPcode()) || menu.getPcode().equals("0")) {
//            menu.setPcode("0");
//            menu.setPcodes("[0],");
//            menu.setLevels(1);
//        } else {
//            int code = Integer.parseInt(menu.getPcode());
//            Menu pMenu = menuMapper.selectById(code);
//            Integer pLevels = pMenu.getLevels();
//            menu.setPcode(pMenu.getCode());
//
//            //如果编号和父编号一致会导致无限递归
//            if (menu.getCode().equals(menu.getPcode())) {
//                throw new BussinessException(BizExceptionEnum.MENU_PCODE_COINCIDENCE);
//            }
//
//            menu.setLevels(pLevels + 1);
//            menu.setPcodes(pMenu.getPcodes() + "[" + pMenu.getCode() + "],");
//        }
//    }

}
